Appendix A
(normative)
CalDAV Testing Matrix
Server 1 | Server 2 | Server 3 | Server 4 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A | B | C | A | B | C | A | B | C | A | B | C | ||
1. | Event creation. | ||||||||||||
1.1. | Create new single-instance meeting titled “Meeting 1.1” with the location “Durham”. | P | P | P | P | P | P | P | N | P | |||
1.2. | Create new meeting titled “Meeting 1.2” recurring every Monday from 10:00 AM to 11:00 AM for 4 weeks | P | P | P | P | P | P | P | N | P | |||
1.3. | Create new single-instance meeting titled “Meeting 1.3” with 2 other attendees. | P | P | N | P | P | P | N | N | N | |||
1.4. | Create new single-instance meeting titled “Meeting 1.4” with an alarm set to trigger 15 minutes prior to the schedule time of the meeting | P | P | P | P | P | P | F | N | P | |||
2. | Event modification | ||||||||||||
2.1. | Modify the title of meeting “Meeting 1.1” to “Meeting 1.1bis”. | P | P | P | P | P | P | N | P | ||||
2.2. | Modify the location of the meeting “Meeting 1.1bis” to “Seattle bis”. | P | P | P | P | P | P | N | P | ||||
2.3. | Reschedule meeting “Meeting 1.1bis” to the next day. | P | P | P | P | P | P | N | P | ||||
2.4. | Add an attendee to “Meeting 1.1bis”. | P | P | N | P | P | N | N | N | ||||
2.5. | Add an alarm to “Meeting 1.1bis”. | P | P | P | P | P | F | N | P | ||||
2.6. | Modify the title of the 1st instance of the recurring meeting created in 1.2. | P | P | P | P | P | F | N | F | ||||
2.7. | Modify the participation status of the 1st attendee in meeting 1.3 to | P | P | N | P | N | P | N | N | ||||
2.8. | Cancel the 4th instance of the recurring meeting created in 1.2. | P | P | P | P | P | V | N | N | ||||
2.9. | One client changes “Meeting 1.1bis” to a different time, second client ‘refreshes’ its display to see the modification. | P | P | P | P | P | F | N | P | ||||
3. | Event retrieval | ||||||||||||
3.1. | calendar-query | N | N | N | N | N | |||||||
3.1.1. | No filtering (match everything) | N | N | N | N | N | |||||||
3.1.1.1. | Query all components and return all data. (tests | N | N | N | N | N | |||||||
3.1.1.2. | Query all components and return ETag WebDAV property and all data. (tests | N | N | N | N | N | |||||||
3.1.1.3. | Query all components and return just entire | N | N | N | N | N | |||||||
3.1.1.4. | Query all components and return | N | N | N | N | N | |||||||
3.1.2. | time-range filtering | N | N | N | N | N | |||||||
3.1.2.1. | Query all components within a one day time-range and return all data. Make sure that there is a recurring event that starts prior to the chosen time-range but has one non-overridden instance within the time-range. (tests | N | N | N | N | N | |||||||
3.1.2.2. | Query all components within a one week time-range and return just entire | N | N | N | N | N | |||||||
3.1.3. | component based filtering | N | N | N | N | N | |||||||
3.1.3.1. | Query all components that contain an embedded | N | N | N | N | N | |||||||
3.1.3.2. | Query all components that contain an embedded | N | N | N | N | N | |||||||
3.1.4. | property based filtering | N | N | N | N | N | |||||||
3.1.4.1. | Query all components that contain any | N | N | N | N | N | |||||||
3.1.4.2. | Query all components that contain an | N | N | N | N | N | |||||||
3.1.4.3. | Query all components that contain an | N | N | N | N | N | |||||||
3.1.5. | parameter based filtering | N | N | N | N | N | |||||||
3.1.5.1. | Query all components that contain a | N | N | N | N | N | |||||||
3.1.5.2. | Query all components that contain an | N | N | N | N | N | |||||||
3.2. | calendar-multiget | N | N | N | N | N | |||||||
3.2.1. | Query a specific | N | N | N | N | N | |||||||
3.2.2. | Query multiple | N | N | N | N | N | |||||||
3.2.3. | Query a specific | N | N | N | N | N | |||||||
3.2.4. | Query multiple | N | N | N | N | N | |||||||
3.2.5. | Query a specific | N | N | N | N | N | |||||||
3.2.6. | Query multiple | N | N | N | N | N | |||||||
4. | Event deletion | ||||||||||||
4.1. | Delete a single non-recurring meeting. | P | P | P | P | N | P | ||||||
4.2. | Delete a single recurring meeting with no overridden instances. | P | P | P | P | N | P | ||||||
4.3. | Delete a single recurring meeting with overridden instances. | P | P | P | P | N | P | ||||||
4.4. | Delete a non-overridden instance of a recurring meeting. | P | P | P | P | N | P | ||||||
4.5. | Delete an overridden instance of a recurring meeting. | P | P | P | P | N | P | ||||||
5. | Access Control | ||||||||||||
5.1. | View access control details on current user’s main calendar. | N | N | N | N | N | N | ||||||
5.2. | Change access control details on current user’s main calendar to add another user with read-only access. Verify that other user can view the calendar but not change it. | N | N | N | N | N | N | ||||||
5.3. | Change access control details on current user’s main calendar to add another user with read-write access. Verify that other user can view the calendar and change it. Verify that changes done by one user are seen by the other. | N | N | N | N | N | N | ||||||
5.4. | Remove another user’s access to the current user’s main calendar and verify they can no longer access the calendar. | N | N | N | N | N | N | ||||||
6 | Calendar Management | ||||||||||||
6.1 | Browse the list of calendars on the server, including the current user’s personal calendars. | N | N | P | N | N | P | N | |||||
6.2 | Create a new calendar in the current user’s personal calendar space. | N | P | P | N | P | P | N | |||||
6.3 | Create a regular collection in the current user’s personal calendar space. | N | N | N | N | N | N | N | |||||
6.4 | Create a new calendar inside the collection created in 6.3. | N | N | N | N | N | N | N | |||||
6.5 | Delete the calendar created in 6.2. | N | P | P | N | P | F | N | |||||
6.6 | Delete the collection created in 6.3. | N | N | N | N | N | N | N | |||||
7 | Free Busy Reports | ||||||||||||
Setup | Create a new calendar and populate it with the following for one week: Event on Monday, 9 am — 11 am, recurs every day for five times | N | N | N | N | N | P | ||||||
7.1 | Run a free-busy report for the entire week. | N | N | P | N | N | F | N | P | ||||
7.1.1 | Verify two | N | N | P | N | N | F | N | P | ||||
7.1.2 | Verify two | N | N | P | N | N | F | N | P | ||||
7.1.3 | Verify four | N | N | P | N | N | F | N | P | ||||
7.1.4 | Verify two | N | N | P | N | N | N | P | |||||
7.1.5 | N | N | P | N | N | F | N | P | |||||
N | N | N | N | N | P | ||||||||
N | N | N | N | N | P | ||||||||
N | N | N | N | N | P | ||||||||
7.1.5 | Verify two | N | N | P | N | N | N | P | |||||
8 | Scheduling | ||||||||||||
Setup | Three user accounts user1 (role Organizer), user2 (role Attendee), user3 (role Attendee) provisioned with suitable principal properties for calendar home, inbox, outbox and user addresses. | N | P | N | N | N | N | ||||||
8.1 | Organizer (user1) sends non-recurring message invite for Monday at 9am (1 hour) to each attendee. Verify that each attendee Inbox receives a copy of the invite. | N | P | N | N | N | N | ||||||
8.2 | Attendee (user2) accepts invite and sends back reply. Verify that reply is placed in Organizer Inbox. | N | P | N | N | N | N | ||||||
8.3 | Organizer (user1) updates invite with user2 accept state and resends invite. Verify that each attendee Inbox receives a copy of the new invite. | N | N | N | N | N | N | ||||||
8.4 | Attendee (user3) accepts updated invite and sends back reply. Verify that reply is placed in Organizer Inbox. | N | N | N | N | N | N | ||||||
8.5 | Organizer (user1) updates invite with user3 accept state and resends invite. Verify that each attendee Inbox receives a copy of the new invite. | N | N | N | N | N | N | ||||||
8.6 | Organizer (user1) cancels the invite. Verify that each attendee Inbox receives the cancellation. | N | P | N | N | N | N |